import 'package:flutter/material.dart';

main() => runApp(MyApp());

/* 
* 生命周期 作用  flutter里面是监听Widget的生命周期
* 1、初始化数据
* 2、发送网络请求
* 3、事件监听
* 4、管理内存，手动销毁
 */

// 生成代码快捷键  stl
class MyApp extends StatelessWidget {
  // build
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: GLHomePage(),
    );
  }
}

class GLHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("电影目录"),
      ),
      body: GLHomeContent(),
    );
  }
}

// StatelessWidget生命周期
// class GLHomeContent extends StatelessWidget {
//   final String message;
//   GLHomeContent(this.message) {
//     print('构造函数被调用');
//   }

//   @override
//   Widget build(BuildContext context) {
//     print("调用build方法");
//     return Text(message);
//   }
// }

// 开发中用的最多的是 StatefulWidget 生命周期
// StatefulWidget生命周期
class GLHomeContent extends StatefulWidget {
  GLHomeContent() {
    print("1、调用GLHomeContent的constructor方法");
  }

  @override
  _GLHomeContentState createState() {
    print("2、调用GLHomeContent的createState方法");
    return _GLHomeContentState();
  }
}

class _GLHomeContentState extends State<GLHomeContent> {
  int _counter = 0;

  _GLHomeContentState() {
    print("3、调用_GLHomeContentState的constructor方法");
  }

  @override
  void initState() {
    // 强调：initState这里必须调用super
    // 1、初始化操作
    // 2、flutter会报警告，看initState源码
    super.initState();
    print("4、调用_GLHomeContentState的initState方法");
  }

  @override
  void didUpdateWidget(GLHomeContent oldWidget) {
    super.didUpdateWidget(oldWidget);
    print("调用_GLHomeContentState的didUpdateWidget方法");
  }

  @override
  void didChangeDependencies() {
    super.didChangeDependencies();
    print("调用_GLHomeContentState的didChangeDependencies方法");
  }

  Widget build(BuildContext context) {
    print("5、调用_GLHomeContentState的build方法");
    return Column(
      children: [
        ElevatedButton(
          // button 1
          child: Text(
            'Add', // 设置按钮文本
            style: TextStyle(
              fontSize: 20, // 字体大小设置为20，你可以根据需要调整
            ),
          ),
          onPressed: () {
            // 点击按钮时执行的代码
            setState(() {
              _counter++;
            });
          },
          style: ButtonStyle(
            backgroundColor: MaterialStateProperty.resolveWith<Color>(
              (Set<MaterialState> states) {
                if (states.contains(MaterialState.pressed)) {
                  return Colors.blue.withOpacity(0.7); // 按下时的颜色
                }
                return Colors.blue; // 默认颜色
              },
            ),
          ),
        ),
        Text("数字：$_counter")
      ],
    );
  }

  @override
  void dispose() {
    // 销毁
    print("6、调用_GLHomeContentState的dispose方法");
    super.dispose();
  }
}
